package org.example.Hashtable;

import java.util.HashSet;

public class happy_number {
    public static void main(String[] args) {
        //快乐数

        //编写一个算法来判断一个数 n 是不是快乐数。
        //
        //「快乐数」 定义为：
        //
        //对于一个正整数，每一次将该数替换为它每个位置上的数字的平方和。
        //然后重复这个过程直到这个数变为 1，也可能是 无限循环 但始终变不到 1。
        //如果这个过程 结果为 1，那么这个数就是快乐数。
        //如果 n 是 快乐数 就返回 true ；不是，则返回 false 。
        int n = 123;
        int q = 0;
        HashSet<Integer> hashSet = new HashSet<>();
        while(true){
            if (n>0){
                q += (n%10) * (n%10);
            }else{
                if (q==1){
                    System.out.println("是快乐数");
                    break;
                }
                if (hashSet.contains(q)){
                    System.out.println("不是快乐数");
                    break;
                }else {
                    hashSet.add(q);
                    n = q*10;
                    q = 0;
                }
            }
            n = n/10;
        }
    }
}
